package com.company;

import com.company.InvalidWorkHourException;

public class SalarySystemTest {
    public static void main(String[] args) {
        // 1. 创建薪资管理器
        SalaryManager salaryManager = new SalaryManager();

        // 2. 创建员工对象
        // 普通员工（正常工时）
        RegularEmployee emp1 = new RegularEmployee("张三", "EMP001", 60, 176); // 176小时=22天×8小时
        // 普通员工（异常工时：超上限）
        RegularEmployee emp2 = new RegularEmployee("李四", "EMP002", 55, 700);
        // 管理人员（正常奖金）
        Manager mgr1 = new Manager("王五", "MGR001", 25000, 8000);
        // 管理人员（负奖金：会被修正为0）
        Manager mgr2 = new Manager("赵六", "MGR002", 20000, -1000);

        // 3. 将员工加入系统
        salaryManager.addEmployee(emp1);
        salaryManager.addEmployee(emp2);
        salaryManager.addEmployee(mgr1);
        salaryManager.addEmployee(mgr2);

        // 4. 批量计算薪资
        salaryManager.batchCalculateSalaries();

        // 5. 打印所有工资条
        System.out.println("\n=== 工资条详情 ===");
        for (String slip : salaryManager.getAllPaySlips()) {
            System.out.println(slip + "\n");
        }

        // 6. 单独测试异常处理
        try {
            emp2.calculateSalary();
        } catch (InvalidWorkHourException e) {
            System.out.println("异常测试：" + e.getMessage());
        }
    }
}